﻿/*
 * Created by SharpDevelop.
 * User: tdptcj
 * Date: 12/09/2011
 * Time: 12:30
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Collections.ObjectModel;

namespace MetaVideoEditorEvolved.UI.Entity
{
	/// <summary>
	/// Description of VideoMediaElement.
	/// </summary>
	public class VideoMediaElement : FileMediaElement
	{
		public VideoMediaElement()
		{
			this.posters = new ObservableCollection<PosterMediaItem>();
			this.backdrops = new ObservableCollection<PosterMediaItem>();
			this.actors = new ObservableCollection<ActorMediaItem>();
			this.crewMembers = new ObservableCollection<CrewMemberMediaItem>();
			this.trailers = new ObservableCollection<TrailerMediaItem>();
			this.genres = new ObservableCollection<string>();
		}
		
		ObservableCollection<TrailerMediaItem> trailers;
		
		public ObservableCollection<TrailerMediaItem> Trailers {
			get 
			{ 
				return this.trailers; 
			}					
		}
		
		ObservableCollection<string> genres;
		
		public ObservableCollection<string> Genres {
			get 
			{ 
				return this.genres; 
			}					
		}
		
		PosterMediaItem primaryBackdrop;
		
		public PosterMediaItem PrimaryBackdrop {
			get 
			{ 
				return this.primaryBackdrop; 
			}
			
			set 
			{ 
				this.primaryBackdrop = value; 
				this.OnNotifyPropertyChanged("PrimaryBackdrop");
			}
		}		
		
		ObservableCollection<CrewMemberMediaItem> crewMembers;
		
		public ObservableCollection<CrewMemberMediaItem> CrewMembers {
			get 
			{ 
				return this.crewMembers; 
			}
			
			set 
			{ 
				this.crewMembers = value; 
				this.OnNotifyPropertyChanged("CrewMembers");
			}
		}
		
		int dataState;
		/// <summary>
		/// Represents the % of data retrieved for the video item
		/// </summary>
		public int DataState {
			get
			{
				return this.dataState;
			}
			
			set
			{
				this.dataState = value;
				this.OnNotifyPropertyChanged("DataState");
			}
		}

		DateTime dateAdded;
		
		public DateTime DateAdded {
			get
			{
				return this.dateAdded;
			}
			
			set
			{
				this.dateAdded = value;
				this.OnNotifyPropertyChanged("DateAdded");
			}
		}
		
		Single? rating;
		
		public Single? Rating {
			get
			{
				return this.rating;
			}
			
			set
			{
				this.rating = value;
				this.OnNotifyPropertyChanged("Rating");
			}
		}
		
		string overview;
		
		public string Overview {
			get 
			{ 
				return this.overview; 
			}
			
			set 
			{ 
				this.overview = value; 
				this.OnNotifyPropertyChanged("Overview");
			}
		}
		
		bool isInError;
		
		public bool IsInError {
			get 
			{ 
				return this.isInError; 
			}
			
			set 
			{ 
				this.isInError = value; 
				this.OnNotifyPropertyChanged("IsInError");
			}
		}
		
		string mPAARating;
		
		public string MPAARating {
			get
			{
				return this.mPAARating;
			}
			
			set
			{
				this.mPAARating = value;
				this.OnNotifyPropertyChanged("MPAARating");
			}
		}
		
		int? runningTime;
		
		public int? RunningTime {
			get
			{
				return this.runningTime;
			}
			
			set
			{
				this.runningTime = value;
				this.OnNotifyPropertyChanged("RunningTime");
			}
		}
		
		int? year;
		
		public int? Year {
			get
			{
				return this.year;
			}
			
			set
			{
				this.year = value;
				this.OnNotifyPropertyChanged("Year");
			}
		}
		
		string sortTitle;
		
		public string SortTitle {
			get
			{
				return this.sortTitle;
			}
			
			set
			{
				this.sortTitle = value;
				this.OnNotifyPropertyChanged("SortTitle");
			}
		}
		
		string originalTitle;
		
		public string OriginalTitle {
			get
			{
				return this.originalTitle;
			}
			
			set
			{
				this.originalTitle = value;
				this.OnNotifyPropertyChanged("OriginalTitle");
			}
		}			
		
		string title;
		
		public string Title {
			get
			{
				return this.title;
			}
			
			set
			{
				this.title = value;
				this.OnNotifyPropertyChanged("Title");
			}
		}
		
		ObservableCollection<ActorMediaItem> actors;
		
		public ObservableCollection<ActorMediaItem> Actors {
			get 
			{ 
				return this.actors; 
			}		
		}
		
		PosterMediaItem primaryPoster;
		
		public PosterMediaItem PrimaryPoster {
			get 
			{ 
				return this.primaryPoster; 
			}
			
			set 
			{ 
				this.primaryPoster = value; 
				this.OnNotifyPropertyChanged("PrimaryPoster");
			}
		}
		
		ObservableCollection<PosterMediaItem> backdrops;
		
		public ObservableCollection<PosterMediaItem> Backdrops {
			get 
			{ 
				return this.backdrops; 
			}					
		}
		
		ObservableCollection<PosterMediaItem> posters;
		
		public ObservableCollection<PosterMediaItem> Posters {
			get 
			{ 
				return this.posters; 
			}					
		}
		
		string mediaType;
		
		public string MediaType {
			get 
			{ 
				return this.mediaType; 
			}
			
			set 
			{ 
				this.mediaType = value; 
				this.OnNotifyPropertyChanged("MediaType");
			}
		}
		
		string metadataLocation;
		
		public string MetadataLocation {
			get 
			{ 
				return this.metadataLocation; 
			}
			
			set 
			{ 
				this.metadataLocation = value; 
				this.OnNotifyPropertyChanged("MetadataLocation");
			}
		}
	}
}
